import axios from 'axios'
import { useUserStore } from '@/stores'
import { showFailToast } from 'vant'
import router from '@/router'

// const baseURL = 'https://consult-api.itheima.net/'
const baseURL = import.meta.env.VITE_APP_BASEURL
const request = axios.create({
  baseURL,
  timeout: 100000
})
// 请求拦截器
request.interceptors.request.use(
  (config) => {
    const store = useUserStore()
    if (store.user.token && config.headers) {
      config.headers.Authorization = `Bearer ${store.user.token}`
    }
    return config
  },
  (error) => {
    // Do something with request error
    return Promise.reject(error)
  }
)
// 响应拦截器
request.interceptors.response.use(
  (res) => {
    // Do something before response is sent
    // 后台约定，响应成功，但是code不是10000，是业务逻辑失败
    if (res.data.code !== 1e4) {
      // 失败弹层
      showFailToast(res.data.message)
      return Promise.reject(res.data)
    }

    return res.data
  },
  (error) => {
    // Do something with response error
    // 判断业务码是401  说明是token过期
    const store = useUserStore()
    if (error.response.status === 401) {
      // 删除用户信息
      store.delUser()
      // 跳转到登录页，记录当前的页面地址，当做参数传过去，登陆之后再返回到本页面
      //router.currentRoute.value.fullPath    =》 全路径  可以携带原本的参数  /home?id=1
      //router.currentRoute.value.path    =》 路径  /home
      router.push(`/login?returnUrl=${router.currentRoute.value.fullPath}`)
    }
    return Promise.reject(error)
  }
)

export { request, baseURL }
